/* 
 * File:   Cerdito.cpp
 * Author: 75.02 - Grupo 7, 2do cuatrimestre 2012.
 * 
 * Created on November 2, 2012, 1:43 PM
 */

#include "HuevoPoche.h"

using namespace TP::Juego::Arena::Actores;
using namespace TP::Juego::Arena::Utilidades;
using namespace std;

HuevoPoche::HuevoPoche() : Huevo(HUEVOPOCHE){
    this->setVida(vida_huevo_poche);
}

HuevoPoche::HuevoPoche(const string& pNombre) : Huevo(pNombre){
    this->setVida(vida_huevo_poche);
}

HuevoPoche::~HuevoPoche() {}

IColisionado* HuevoPoche::colisionar(IColisionado* pColisionado){
	string& rol = pColisionado->getRol()->Nombre();
	
	if (rol == PAJARITO) {
		// Hacer 0.25 de dmg
	} else if (rol == CAJA) {
		// Hacer 0.5 de dmg
	} else if (rol == PERIMETRO) {
		// Destruirse
	} else if (rol == PISO) {
		// Destruirse
	}
}

string HuevoPoche::aXML(){

    TiXmlDocument* doc = new TiXmlDocument();
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());

    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}


string HuevoPoche::aXML(const string& pPath){

    TiXmlDocument* doc = new TiXmlDocument(pPath.c_str());
    TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" );
    doc->LinkEndChild( decl );
    
    doc->LinkEndChild(this->aElementoXML());
    
    TiXmlPrinter printer;
    doc->Accept(&printer);
    return printer.CStr();    
}

void HuevoPoche::parseXML (const string& pDescriptor){

    TiXmlDocument doc;
    doc.Parse(pDescriptor.c_str(), 0, TIXML_ENCODING_UTF8);
    this->deElementoXML(doc.FirstChildElement());
}

TiXmlElement* HuevoPoche::aElementoXML (){
    
    TiXmlElement * element = new TiXmlElement(HUEVOPOCHE);

    element->SetAttribute("nombre", this->Nombre().c_str());  
    element->LinkEndChild(this->getTrayectoria()->aElementoXML());
    return element;
}

void HuevoPoche::deElementoXML (TiXmlElement* pElemento){

    if (strcmp (pElemento->Value(), HUEVOPOCHE) == 0)
    {
        this->setNombre(pElemento->Attribute("nombre"));
        
        Trayectoria* trayectoria = new Trayectoria ();
        trayectoria->deElementoXML (pElemento->FirstChildElement());
        this->setTrayectoria(trayectoria);
    }
}

double HuevoPoche::getPoderAtaqueContraPajarito () {
    return danio_huevo_poche_pajaro;
}
    
double HuevoPoche::getPoderAtaqueContraSuperficie () {
    return danio_huevo_poche_superficie;
}

double HuevoPoche::getPoderAtaqueContraCerditos () {
    return danio_huevo_poche_cerditos;
}